perm filename DEMO[RDG,DBL]1 blob sn#603575 filedate 1981-08-03 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00008 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	This demo is to introduce new users to the RLL system.
C00004 00003		Start Up and Look See
C00007 00004		Geneology
C00010 00005		More parentage
C00011 00006		Rearranging hierarchy
C00012 00007		Other things
C00013 00008		Pack to probing
C00015 ENDMK
C⊗;
This demo is to introduce new users to the RLL system.
[30 July 1981]

Theme: To everything, a unit.

Overhead:
RLL does well at:
1. Functions - from processes, to slots.  well incorporated
	(these will probably be carried over to next systems...)
2. Unit initialization -- still more thinking, but framework present.
3. KB consistency -- ties in Caching, Cognitive Economy

RLL's current failings:
1. Many unsightly clumps of LISP code
2. Much of this is in LISP functions, not (yet) unit-zed

Meta comments:
	Please feel free to ask questions at any time.
	Also, I'd appreciate feedback at the end, offering suggestions
for how to improve this sort of thing for next time.
In particular, which (painfully obvious) parts did I belabor; and where were
you just totally snowed.
What should the prerequesites for this demo be?
	Start Up and Look See

(Start up RLL from the monitor level -- thru CORLL, reading in KBs...)

DI(Anything S 4)
	- most elaborated part are processes - from ...
	- view of slots as functions

DI(Anything S 4)
	- note faster this time - as stuff
		(from defn of SubClass* to actual stoed values, have been cached)

EU AnySlot
	- InterLisp editor - with a few of my bells-and-whistles
	- Recursion
	- Changes can be made, and updates as appropriate

EU RussGreiner	[or RLL.STATUS, UNION, PutValue]
	- weak version of user profile
		[Recall RLL suggested my standard files and options]
	- Go up to AnyUser, then to TypicalUser
		Show defaults [note also its Isa, MyIsa]

	<< Comment: show individual pointing to class,
		and class down to typical example >>>
  (To show new values being automatically derived and cached)
AllIsas(RussGreiner)
	- Note RussGreiner did NOT have an AllIsas property before, but does now
	- Note there is no AllIsas function 
		[done using a general hack (for all processes) to interpreter]

EU TypicalStatus
	- Examine NewPossibleSlots here

(this leads to:)

NewKB(DEMO)
	- Show new unit, DEMO.STATUS
		[Some slots (Isa) initialized;
		 others (KBsFNS?) can get values as needed.]

  === Pause for Questions ===
	Geneology

NewSubClass(AnyPerson Anything)

NewTypEx(TypicalPerson)
	- Add slots: Gender, Husband, Wife, Mother, Kids, #Hands:2
	 (Inverse: Mother & Kids, Husband & Wife)
	- Show elaborate RangeType: 
	  (FSingleton (UnitType (L-AND (*P AnyPerson)
				       (*SlotVal Gender Male)))) ...
  [Before leaving, show PossibleSlotsOfIExamples - note no StoredAValue]
	- Note we could have AnyMan & AnyWoman; with different slots.
		[both under AnyPerson] -- but for now, no.
		Can switch later.
 (Observe successive new slots faster - show same PSofIE again, to show why)

--- Comments ---
These new slots hold almost nothing - just framework.
We'll fill them in later.

[On to Geneology]

NewIsa(Steve (AnyPerson))
	- Again, this first person will be slow.
	- Gender:Male
	- Oops - let's first give Gender:RangeType a value.

#Hands(Steve)	← 2, as inherited

Wife(Steve)	← NoEntry  (as none given -- this value cached as well)

Husband(Steve)	← u.d.f. as type error

NewIsa(Momma)
	- faster

NewIsa(Hubby)
	.
	.
	.

NewIsa(Father AnyComputableSlot)
	- Give it a HighLevelDefn = (Composition Husband Mother)
	- MakesSenseFor = (TypicalPerson)

 (Note PSofIE has nothing for (AnyPerson) anymore.  Really indirect.)
	[Quickly show KBUpdates for NewPossibleSlots - and show its derivation
		from CVUsedBy]

Father(Steve)
	- Note Father has been stashed

NewIsa(Hub2)
	- Set Wife to Momma
	- This will reset Husband of Momma (note it squacks!)

EU FSingleton
	- Quick mention - here is where squack occurred
	- We could turn this off, but fixes it HERE.

EU Steve
	- Note Father removed!

Father(Steve)
	- does the right thing now.
	- One time cost.

	More parentage

AddValue(TypicalPerson NewPossibleSlot Parents)
	- show it getting added.
  for Parents:HLD = (Unioning Mother Father)
 (Now PSofIE is changed, as is SteveKlein:MySensibleSlots)

 --- SubTheme: Cognitive Economy -- you have the values you want, when
	you want them.  Only one time expense. ---

AddValue(TypicalPerson NewPossibleSlot Aunt)
  for Aunt:HLD = (Unioning (Composition Sister Parents)
			   (Composition Wife Brother Parents))

	- we could now sort these by Wealth, but only additional hassle -

  === Pause for Questions ===
	Rearranging hierarchy

 (Make all Persons Users)
EU AnyPerson
	- Change SuperClass to (AnyUser)

 (Show that Steve now has new set of slots)
 (Also PSofIE has been changed again -- maybe:
	Note the changes don't go thru uncached values, as too expensive
		(could be twiddled to, but ...)

 --- Note this would have been virtually IMPOSSIBLE in units ---

Change Momma to be an AnyUser
	Note Gender now irrlevant, and discarded
	- Steve now loses his Mother, Father, ...

	Other things
There are Units for
 * Format
 * Datatypes
 * Classes
 * Slots
 * Inheritances
 * Some functions - eg MapUnion
 * Slot combiners - even Functional for generating sc's!

Info for things like
  When deleting a slot, or a class
  Or when renaming -- there are special case

	Pack to probing
 (Can put special info to direct Get, Put, ...)

Let's look at the functions:
	- GetValue
	- PutValue (AddValue, DeleteValue, SubstValue)
	- FNewUnit

Smarts are, well, look on

EU TypicalSlot
	- Note the ToGetValue, ToPutValue, ...

Consider Isa - with its special AfterPutValue
	(Sorry, not yet a unit.)